#ifndef SDOGEOMETRY_ORACLE
# define SDOGEOMETRY_ORACLE

#ifndef OCCI_ORACLE
# include <occi.h>
#endif

class sdo_point_type;
class SDO_GEOMETRY;

/************************************************************/
//  generated declarations for the SDO_POINT_TYPE object type.
/************************************************************/

class sdo_point_type : public oracle::occi::PObject {

private:

   oracle::occi::Number x;
   oracle::occi::Number y;
   oracle::occi::Number z;

public:

   oracle::occi::Number getx() const;

   void setx(const oracle::occi::Number &value);

   oracle::occi::Number gety() const;

   void sety(const oracle::occi::Number &value);

   oracle::occi::Number getz() const;

   void setz(const oracle::occi::Number &value);

   void *operator new(size_t size);

   void *operator new(size_t size, const oracle::occi::Connection * sess,
      const OCCI_STD_NAMESPACE::string& table);

   void *operator new(size_t, void *ctxOCCI_);

   void *operator new(size_t size, const oracle::occi::Connection *sess,
      const OCCI_STD_NAMESPACE::string &tableName, 
      const OCCI_STD_NAMESPACE::string &typeName,
      const OCCI_STD_NAMESPACE::string &tableSchema, 
      const OCCI_STD_NAMESPACE::string &typeSchema);

   OCCI_STD_NAMESPACE::string getSQLTypeName() const;

   void getSQLTypeName(oracle::occi::Environment *env, void **schemaName,
      unsigned int &schemaNameLen, void **typeName,
      unsigned int &typeNameLen) const;

   sdo_point_type();

   sdo_point_type(void *ctxOCCI_) : oracle::occi::PObject (ctxOCCI_) { };

   static void *readSQL(void *ctxOCCI_);

   virtual void readSQL(oracle::occi::AnyData& streamOCCI_);

   static void writeSQL(void *objOCCI_, void *ctxOCCI_);

   virtual void writeSQL(oracle::occi::AnyData& streamOCCI_);

   ~sdo_point_type();

};

/************************************************************/
//  generated declarations for the SDO_GEOMETRY object type.
/************************************************************/

class SDO_GEOMETRY : public oracle::occi::PObject {

private:

   oracle::occi::Number sdo_gtype;
   oracle::occi::Number sdo_srid;
   sdo_point_type * sdo_point;
   OCCI_STD_NAMESPACE::vector< oracle::occi::Number > sdo_elem_info;
   OCCI_STD_NAMESPACE::vector< oracle::occi::Number > sdo_ordinates;

public:

   oracle::occi::Number getsdo_gtype() const;

   void setsdo_gtype(const oracle::occi::Number &value);

   oracle::occi::Number getsdo_srid() const;

   void setsdo_srid(const oracle::occi::Number &value);

   sdo_point_type * getsdo_point() const;

   void setsdo_point(sdo_point_type * value);

   OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& getsdo_elem_info();

   const OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& getsdo_elem_info() const;

   void setsdo_elem_info(const OCCI_STD_NAMESPACE::vector< oracle::occi::Number > &value);

   OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& getsdo_ordinates();

   const OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& getsdo_ordinates() const;

   void setsdo_ordinates(const OCCI_STD_NAMESPACE::vector< oracle::occi::Number > &value);

   void *operator new(size_t size);

   void *operator new(size_t size, const oracle::occi::Connection * sess,
      const OCCI_STD_NAMESPACE::string& table);

   void *operator new(size_t, void *ctxOCCI_);

   void *operator new(size_t size, const oracle::occi::Connection *sess,
      const OCCI_STD_NAMESPACE::string &tableName, 
      const OCCI_STD_NAMESPACE::string &typeName,
      const OCCI_STD_NAMESPACE::string &tableSchema, 
      const OCCI_STD_NAMESPACE::string &typeSchema);

   OCCI_STD_NAMESPACE::string getSQLTypeName() const;

   void getSQLTypeName(oracle::occi::Environment *env, void **schemaName,
      unsigned int &schemaNameLen, void **typeName,
      unsigned int &typeNameLen) const;

   SDO_GEOMETRY();

   SDO_GEOMETRY(void *ctxOCCI_) : oracle::occi::PObject (ctxOCCI_) { };

   static void *readSQL(void *ctxOCCI_);

   virtual void readSQL(oracle::occi::AnyData& streamOCCI_);

   static void writeSQL(void *objOCCI_, void *ctxOCCI_);

   virtual void writeSQL(oracle::occi::AnyData& streamOCCI_);

   ~SDO_GEOMETRY();

};

#endif
